Low power and Lossy Networks (LLNs), e.g., sensor networks, have a myriad of applications, such as Smart Grid and Smart Cities. Such applications typically utilize multicast communication for delivering messages to multiple devices within the LLN. Multicast communication is often used for configuring, upgrading the firmware, and issuing requests to groups of devices (as opposed to all devices, thus the critical need for multicast in addition to broadcast).
One method to support multicast delivery in an LLN is by implementing a network-wide flood. With this method, a device receiving new multicast messages forwards the messages simply by rebroadcasting the same messages. A unique identifier (e.g., sequence number) within the message allows devices to determine if they have is previously received the message and, if so, the device simply ignores repeated receptions. While simple, this mechanism introduces significant transmission overhead since every device in the LLN will rebroadcast a multicast message. Such a technique is in fact similar to data packet broadcast, an expensive technique in LLNs.
An alternative approach is to use the known Trickle algorithm to disseminate the multicast message to all devices in a controlled fashion. While the Trickle algorithm minimizes transmission overhead, the suppression mechanisms can add significant communication delay.
Yet another approach is to build and maintain a multicast forwarding topology. For example, routers can maintain states about which of its descendants (e.g., in a directed acyclic graph or “DAG”) are subscribed to a multicast group. When receiving a multicast message in this approach, a router will unicast the message to each child that has indicated interest in the multicast group. This mechanism is efficient when the group membership is sparse, but very inefficient when the group membership is dense (e.g., all-nodes group). A Smart Grid advanced metering infrastructure (AMI) deployment can be quite dense, and a router may have many (e.g., greater than one hundred) children. Sending a unicast message to each child on each hop is thus very inefficient.